package com.starry.module.system.core.oauth2.service;

import com.starry.core.common.domain.vo.PageVo;
import com.starry.module.system.api.oauth2.domain.qo.Oauth2ThirdClientPageQo;
import com.starry.module.system.api.oauth2.domain.qo.Oauth2ThirdClientQo;
import com.starry.module.system.api.oauth2.domain.vo.Oauth2ThirdClientDtlVo;
import com.starry.module.system.api.oauth2.domain.vo.Oauth2ThirdClientListVo;
import com.starry.module.system.api.oauth2.domain.vo.Oauth2ThirdClientVo;
import com.starry.module.system.core.oauth2.entity.Oauth2ThirdClient;

import java.util.List;
import java.util.Set;

/**
 * 第三方客户端-服务
 * @author xiaoke
 */
public interface Oauth2ThirdClientService {

    /**
     * 分页查询所有数据
     *
     * @param pageQo 查询实体
     * @return 所有数据
     */
    PageVo<Oauth2ThirdClientVo> page(Oauth2ThirdClientPageQo pageQo);

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    Oauth2ThirdClientDtlVo getById(Long id);


    /**
     * 通过code查询单条数据
     *
     * @param code clientCode
     * @return Oauth2ThirdClient
     */
    Oauth2ThirdClient getByClientCode(String code);

    /**
     * 新增数据
     *
     * @param oauth2ThirdClientQo 实体对象
     * @return 新增结果
     */
    Long save(Oauth2ThirdClientQo oauth2ThirdClientQo);

    /**
     * 修改数据
     *
     * @param oauth2ThirdClientQo 实体对象
     */
    void updateById(Oauth2ThirdClientQo oauth2ThirdClientQo);

    /**
     * 删除数据
     *
     * @param idList 主键集合
     */
    void removeByIds(Set<Long> idList);

    /**
     * 启用数据
     *
     * @param idList 主键集合
     */
    void enable(Set<Long> idList);

    /**
     * 禁用数据
     *
     * @param idList 主键集合
     */
    void disable(Set<Long> idList);

    /**
     * 获取第三方客户端列表
     * @return List<Oauth2ThirdClientListVo>
     */
    List<Oauth2ThirdClientListVo> getClientList();
}

